#!/bin/bash
###############################################################################
# File name:
#     atlas_emmc_icp.sh
#
# Descrption:
#     You can enter and exit the ICP mode via connecting or disconnecting 
# the UTX and URX pin in UART2.
#
# $1 - Atlas module number
#
# The atlas modules are mapped in machine as following:
# Module 1:
# |21(F1)|22(F2)|23(F3)|24(F4)|  enp5s
# |17(E1)|18(E2)|19(E3)|20(E4)|  enp4s
# |13(D1)|14(D2)|15(D3)|16(D4)|  enp3s
# |09(C1)|10(C2)|11(C3)|12(C4)|  enp9s
# |05(B1)|06(B2)|07(B3)|08(B4)|  enp8s
# |01(A1)|02(A2)|03(A3)|04(A4)|  enp7s
#
# Module 2:
# |13(D1)|14(D2)|15(D3)|16(D4)|  enp7s
# |09(C1)|10(C2)|11(C3)|12(C4)|  enp6s
# |05(B1)|06(B2)|07(B3)|08(B4)|  enp5s
# |01(A1)|02(A2)|03(A3)|04(A4)|  enp2s
#
# 1. Configure the ethernet via netplan according to the module bank.
# 2. Run the script with the module number inputed. 
# Exp: 
# Netplan enp7s as 192.168.0.1
# ./atlas_emmc_icp.sh 1 connect #Enter the ICP mode on atlas module 1.
# ./atlas_emmc_icp.sh 1 disconnect #Exit the ICP mode on atlas module 1.
###############################################################################
ATLAS_NUM=$1

# Select the ATLAS module and connect the UTX and URX
if [ "$2" == "connect" ]; then
    case $ATLAS_NUM in
    #CN11-CN1
    1)
    lHRAT -i2c -w8 0 0x23 0x07 0xf8
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN11-CN2
    2)
    lHRAT -i2c -w8 0 0x23 0x07 0xf8
    lHRAT -i2c -w8 0 0x23 0x03 0x02
    ;;
    #CN11-CN3
    3)
    lHRAT -i2c -w8 0 0x23 0x07 0xf8
    lHRAT -i2c -w8 0 0x23 0x03 0x04
    ;;
    #CN11-CN4
    4)
    lHRAT -i2c -w8 0 0x23 0x07 0xf8
    lHRAT -i2c -w8 0 0x23 0x03 0x06
    ;;
    #CN12-CN1
    5)
    lHRAT -i2c -w8 0 0x23 0x07 0xc7
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN12-CN2
    6)
    lHRAT -i2c -w8 0 0x23 0x07 0xc7
    lHRAT -i2c -w8 0 0x23 0x03 0x10
    ;;
    #CN12-CN3
    7)
    lHRAT -i2c -w8 0 0x23 0x07 0xc7
    lHRAT -i2c -w8 0 0x23 0x03 0x20
    ;;
    #CN12-CN4
    8)
    lHRAT -i2c -w8 0 0x23 0x07 0xc7
    lHRAT -i2c -w8 0 0x23 0x03 0x30
    ;;
    #CN13-CN1
    9)
    lHRAT -i2c -w8 0 0x24 0x07 0xf8
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN13-CN2
    10)
    lHRAT -i2c -w8 0 0x24 0x07 0xf8
    lHRAT -i2c -w8 0 0x24 0x03 0x02
    ;;
    #CN13-CN3
    11)
    lHRAT -i2c -w8 0 0x24 0x07 0xf8
    lHRAT -i2c -w8 0 0x24 0x03 0x04
    ;;
    #CN13-CN4
    12)
    lHRAT -i2c -w8 0 0x24 0x07 0xf8
    lHRAT -i2c -w8 0 0x24 0x03 0x06
    ;;
    #CN14-CN1
    13)
    lHRAT -i2c -w8 0 0x24 0x07 0xc7
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN14-CN2
    14)
    lHRAT -i2c -w8 0 0x24 0x07 0xc7
    lHRAT -i2c -w8 0 0x24 0x03 0x10
    ;;
    #CN14-CN3
    15)
    lHRAT -i2c -w8 0 0x24 0x07 0xc7
    lHRAT -i2c -w8 0 0x24 0x03 0x20
    ;;
    #CN14-CN4
    16)
    lHRAT -i2c -w8 0 0x24 0x07 0xc7
    lHRAT -i2c -w8 0 0x24 0x03 0x30
    ;;
    #CN15-CN1
    17)
    lHRAT -i2c -w8 0 0x23 0x06 0xf8
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN15-CN2
    18)
    lHRAT -i2c -w8 0 0x23 0x06 0xf8
    lHRAT -i2c -w8 0 0x23 0x02 0x02
    ;;
    #CN15-CN3
    19)
    lHRAT -i2c -w8 0 0x23 0x06 0xf8
    lHRAT -i2c -w8 0 0x23 0x02 0x04
    ;;
    #CN15-CN4
    20)
    lHRAT -i2c -w8 0 0x23 0x06 0xf8
    lHRAT -i2c -w8 0 0x23 0x02 0x06
    ;;
    #CN16-CN1
    21)
    lHRAT -i2c -w8 0 0x23 0x06 0xc7
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN16-CN2
    22)
    lHRAT -i2c -w8 0 0x23 0x06 0xc7
    lHRAT -i2c -w8 0 0x23 0x02 0x10
    ;;
    #CN16-CN3
    23)
    lHRAT -i2c -w8 0 0x23 0x06 0xc7
    lHRAT -i2c -w8 0 0x23 0x02 0x20
    ;;
    #CN16-CN4
    24)
    lHRAT -i2c -w8 0 0x23 0x06 0xc7
    lHRAT -i2c -w8 0 0x23 0x02 0x30
    ;;
    *)
    echo "|21(F1)|22(F2)|23(F3)|24(F4)|"
    echo "|17(E1)|18(E2)|19(E3)|20(E4)|"
    echo "|13(D1)|14(D2)|15(D3)|16(D4)|"
    echo "|09(C1)|10(C2)|11(C3)|12(C4)|"
    echo "|05(B1)|06(B2)|07(B3)|08(B4)|"
    echo "|01(A1)|02(A2)|03(A3)|04(A4)|"
    exit 1
    ;;
    esac
fi

# Select the ATLAS module and disconnect the UTX and URX
if [ "$2" == "disconnect" ]; then
    case $ATLAS_NUM in
    #CN11-CN1
    1)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN11-CN2
    2)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN11-CN3
    3)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN11-CN4
    4)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN12-CN1
    5)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN12-CN2
    6)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN12-CN3
    7)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN12-CN4
    8)
    lHRAT -i2c -w8 0 0x23 0x07 0xff
    lHRAT -i2c -w8 0 0x23 0x03 0x00
    ;;
    #CN13-CN1
    9)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN13-CN2
    10)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN13-CN3
    11)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN13-CN4
    12)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN14-CN1
    13)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN14-CN2
    14)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN14-CN3
    15)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN14-CN4
    16)
    lHRAT -i2c -w8 0 0x24 0x07 0xff
    lHRAT -i2c -w8 0 0x24 0x03 0x00
    ;;
    #CN15-CN1
    17)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN15-CN2
    18)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN14-CN3
    19)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN15-CN4
    20)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN16-CN1
    21)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN16-CN2
    22)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN16-CN3
    23)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    #CN16-CN4
    24)
    lHRAT -i2c -w8 0 0x23 0x06 0xff
    lHRAT -i2c -w8 0 0x23 0x02 0x00
    ;;
    *)
    echo "|21(F1)|22(F2)|23(F3)|24(F4)|"
    echo "|17(E1)|18(E2)|19(E3)|20(E4)|"
    echo "|13(D1)|14(D2)|15(D3)|16(D4)|"
    echo "|09(C1)|10(C2)|11(C3)|12(C4)|"
    echo "|05(B1)|06(B2)|07(B3)|08(B4)|"
    echo "|01(A1)|02(A2)|03(A3)|04(A4)|"
    exit 1
    ;;
    esac    
fi


